/**
 * Created by 0141434 on 2017/1/17.
 */

// 对Date的扩展，将 Date 转化为指定格式的String
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符，
// 年(y)可以用 1-4 个占位符，毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
// 例子：
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
// (new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18
Date.prototype.Format = function (fmt) { //author: meizz
    var o = {
        "M+": this.getMonth() + 1, //月份
        "d+": this.getDate(), //日
        "h+": this.getHours(), //小时
        "m+": this.getMinutes(), //分
        "s+": this.getSeconds(), //秒
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度
        "S": this.getMilliseconds() //毫秒
    };
    if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
        if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
};
//字符串以xx结尾
String.prototype.endWith=function(endStr){
    var d=this.length-endStr.length;
    return (d>=0&&this.lastIndexOf(endStr)==d);
};

//打开对话框(添加修改)
function openDialog(title,url,width,height,target){
    layer.open({
        type: 2,
        area: [width, height],
        title: title,
        maxmin: false, //开启最大化最小化按钮
        content: url ,
        btn: ['确定', '关闭'],
        yes: function(index, layero){
            var body = layer.getChildFrame('body', index);
            var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象，执行iframe页的方法：iframeWin.method();
            var inputForm = body.find('#inputForm');
            var top_iframe;
            if(target){
                top_iframe = target;//如果指定了iframe，则在改frame中跳转
            }else{
                top_iframe = getActiveTab().attr("name");//获取当前active的tab的iframe
            }
            inputForm.attr("target",top_iframe);//表单提交成功后，从服务器返回的url在当前tab中展示

            if(iframeWin.contentWindow.doSubmit() ){
                // layer.close(index);//关闭对话框。
                setTimeout(function(){layer.close(index)}, 100);//延时0.1秒，对应360 7.1版本bug
            }

        },
        cancel: function(index){
        }
    });

}

//打开对话框(查看)
function openDialogView(title,url,width,height){
    var winWidth = width==null?"90%":""+width;
    var winHeight = height==null?"90%":""+height;
    if(!winWidth.endWith("%"))winWidth+="px";
    if(!winHeight.endWith("%"))winHeight+="px";
    layer.open({
        type: 2,
        area: [winWidth, winHeight],
        title: title,
        maxmin: true, //开启最大化最小化按钮
        content: url
        /*btn: ['关闭'],
        cancel: function(index){
        }*/
    });

}



/**
 * 默认执行子页面 doSubmit
 * 打开窗口
 */
function openButtonWindow(winTitle,winURL,width,height,button,callback){
    var winWidth = width==null?"90%":""+width;
    var winHeight = height==null?"90%":""+height;
    if(!winWidth.endWith("%"))winWidth+="px";
    if(!winHeight.endWith("%"))winHeight+="px";
    layer.open({
        type: 2,
        maxmin: false,
        title: winTitle,
        shade: [0.5,'#333'],
        offset: ['50px', ''], //上边距50像素
        area: [winWidth, winHeight],
        content:winURL,
        btn: [button],
        yes: function(index, layero){
            var body = layer.getChildFrame('body', index);
            var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象，执行iframe页的方法：iframeWin.method();

            if(iframeWin.contentWindow.doSubmit(callback) ){
                // layer.close(index);//关闭对话框。
                setTimeout(function(){layer.close(index)}, 100);//延时0.1秒，对应360 7.1版本bug
            }


        } ,success: function(layero){
            var btn = layero.find('.layui-layer-btn');
            btn.find('.layui-layer-btn0').attr({
                id: 'layui-layer-btn-1000'
            });
        }
    });

    //保存callback，根据子窗口的index来索引
    if(callback && typeof(callback) === "function"){
        share.data(parent.layer ? parent.layer.index : layer.index ,callback);
    }
}


/**
 * 默认执行子页面 doSubmit
 * 打开窗口
 */
function openWindow(winTitle,winURL,width,height,callback,maxmin){
    var winWidth = width==null?"90%":""+width;
    var winHeight = height==null?"90%":""+height;
    if(!winWidth.endWith("%"))winWidth+="px";
    if(!winHeight.endWith("%"))winHeight+="px";
    var isMaxMin = maxmin==null?true:maxmin;
    layer.open({
        type: 2,
        maxmin: isMaxMin,
        title: winTitle,
        shade: [0.5,'#333'],
        offset: ['50px', ''], //上边距50像素
        area: [winWidth, winHeight],
        content:winURL,
        btn: ['确定', '关闭'],
        yes: function(index, layero){
            var body = layer.getChildFrame('body', index);
            var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象，执行iframe页的方法：iframeWin.method();

            if(iframeWin.contentWindow.doSubmit(callback) ){
                // layer.close(index);//关闭对话框。
                setTimeout(function(){layer.close(index)}, 100);//延时0.1秒，对应360 7.1版本bug
            }
        },
        cancel: function(index){

        }
    });

    //保存callback，根据子窗口的index来索引
    if(callback && typeof(callback) === "function"){
        share.data(parent.layer ? parent.layer.index : layer.index ,callback);
    }
}

/**
 * wizard 窗口
 * @param winTitle
 * @param winURL
 * @param width
 * @param height
 * @param callback
 */
function openWizardWindow(winTitle,winURL,width,height,callback,btnName){
    var winWidth = width==null?"90%":""+width;
    var winHeight = height==null?"90%":""+height;
    if(!winWidth.endWith("%"))winWidth+="px";
    if(!winHeight.endWith("%"))winHeight+="px";
    layer.open({
        type: 2,
        maxmin: false,
        title: winTitle,
        shade: [0.5,'#333'],
        offset: ['50px', ''], //上边距50像素
        area: [winWidth, winHeight],
        content:winURL,
        btn: [btnName, '关闭'],
        yes: function(index, layero){
            //var body = layer.getChildFrame('body', index);
            var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象，执行iframe页的方法：iframeWin.method();
            if(iframeWin.contentWindow.doSubmit(callback) ){
                // layer.close(index);//关闭对话框。
                setTimeout(function(){layer.close(index)}, 100);//延时0.1秒，对应360 7.1版本bug
            }
        },
        cancel: function(index){

        }
    });

    //保存callback，根据子窗口的index来索引
    if(callback && typeof(callback) === "function"){
        share.data(parent.layer ? parent.layer.index : layer.index ,callback);
    }
}
//此方法由子窗口调用，故window.name是iframe页面的name
function closeWindow(data){

    //取得callback
    var callback = share.remove(parent.layer.getFrameIndex(window.name));
    if(callback && typeof(callback) === "function"){
        //callback初始是由父窗口创建的，所以此时回调时，仍然是父窗口执行的。
        callback(data);
    }

    //关闭窗口
    parent.layer.close(parent.layer.getFrameIndex(window.name));
}


function loading(mess){
    /*if (mess == undefined || mess == ""){
     mess = "正在提交，请稍等...";
     }
     resetTip();
     $.jBox.tip(mess,'loading',{opacity:0});*/

    if (mess == undefined || mess == "") mess = "正在提交，请稍等...";

    top.parent.layer.msg(mess,{icon: 1});

}

var share = {
    /**
     * 跨框架数据共享接口
     * @param    {String}    存储的数据名
     * @param    {Any}        将要存储的任意数据(无此项则返回被查询的数据)
     */
    data: function (name, value) {
        var top = window.top,
            cache = top['_CACHE'] || {};
        top['_CACHE'] = cache;

        return value !== undefined ? cache[name] = value : cache[name];
    },

    /**
     * 数据共享删除接口
     * @param    {String}    删除的数据名
     */
    remove: function (name) {
        var cache = window.top['_CACHE'];
        var value = null;
        if (cache && cache[name]){
            value = cache[name];
            delete cache[name];
        }
        return value;
    }
};


$.fn.serializeJson=function(){
    var serializeObj={};
    var array=this.serializeArray();
    $(array).each(function(){
        if(serializeObj[this.name]){
            if($.isArray(serializeObj[this.name])){
                serializeObj[this.name].push(this.value);
            }else{
                serializeObj[this.name]=[serializeObj[this.name],this.value];
            }
        }else{
            serializeObj[this.name]=this.value;
        }
    });
    return serializeObj;
};


// 获取URL地址参数
function getQueryString(name, url) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
    if (!url || url == ""){
        url = window.location.search;
    }else{
        url = url.substring(url.indexOf("?"));
    }
    r = url.substr(1).match(reg)
    if (r != null) return unescape(r[2]); return null;
}

// 确认对话框
function confirmx(mess, href, closed){

    top.layer.confirm(mess, {icon: 3, title:'系统提示'}, function(index){
        //do something
        if (typeof href == 'function') {
            href();
        }else{
            location = href;
        }
        top.layer.close(index);
    });


    return false;
}

function  getGlobalCityId() {

    if(__cityId ){
        return __cityId;
    }else{
      return   $.cookie('_cityId');
    }

}

var _change = {
    // 数字与中文映射
    ary0:["零", "一", "二", "三", "四", "五", "六", "七", "八", "九"],
    // 每四位以内的单位
    ary1:["", "十", "百", "千"],
    // 四位以上的单位
    ary2:["", "万", "亿", "兆"],
    init:function (name) {
        this.name = name;
    },
    strrev:function () {
        var ary = [];
        for (var i = this.name.length; i >= 0; i--) {
            ary.push(this.name[i]);
        }
        return ary.join("");
    }, //倒转字符串。
    isUnit: function(ary) {
        var retVal = false;
        var cur = ary[0];
        if(this.ary2.indexOf(cur) > 0) {
            retVal = true;
        }
        return retVal;
    },// 检查是否时ary2中的单位
    pri_ary:function () {
        var $this = this;
        // 反转后再逐位处理
        var ary = this.strrev();
        // 是否读零
        var zero = "";
        // 缓存结果
        var newary = "";
        // 万级单位数组索引
        var i4 = -1;
        for (var i = 0; i < ary.length; i++) {
            // 首先判断万级单位，每隔四个字符就让万级单位数组索引号递增
            if (i % 4 == 0) {
                i4++;
                // 将万级单位存入该字符的读法中去，它肯定是放在当前字符读法的末尾，所以首先将它叠加入$r中，
                newary = this.ary2[i4] + newary;
                // 在万级单位位置的“0”肯定是不用的读的，所以设置零的读法为空
                zero = "";
            }
            //关于0的处理与判断。
            //如果读出的字符是“0”，执行如下判断这个“0”是否读作“零”
            if (ary[i] == '0') {
                switch (i % 4) {
                    case 0:
                        break;
                    // 如果位置索引能被4整除，表示它所处位置是万级单位位置，
                    // 这个位置的0的读法在前面就已经设置好了，所以这里直接跳过
                    case 1:
                    case 2:
                    case 3:
                        // 如果不被4整除，那么都执行这段判断代码：
                        // 如果它的下一位数字（针对当前字符串来说是上一个字符，因为之前执行了反转）也是0，
                        // 那么跳过，否则读作“零”
                        if (ary[i - 1] != '0') {
                            zero = "零";
                        }
                        break;

                }

                newary = zero + newary;
                zero = '';
            }
            else {
                // 如果不是“0”，就将该当字符转换成数值型，
                // 并作为数组ary0的索引号，以得到与之对应的中文读法，
                // 其后再跟上它的的一级单位（空、十、百还是千）最后再加上前面已存入的读法内容。
                newary = this.ary0[parseInt(ary[i])] + this.ary1[i % 4] + newary;
            }

        }
        // 用while处理最前面的零和单位（前面没有数字则不需要单位）
        while (newary.indexOf("零") == 0 || this.isUnit(newary)) {
            newary = newary.substr(1);
        }
        return newary;
    }
}

//创建class类
function change() {
    this.init.apply(this, arguments);
}
change.prototype = _change;